var editor = new Ext.ux.grid.RowEditor({
			saveText : '保存'
		});
var saveCustomer = function(form, close) {
	Ext.Ajax.request({
				url : _ctxPath + "saveCustomer.do",
				method : 'post',
				params : {
					'customer.id' : form.getForm()
							.findField("inRecords.customerid").getValue(),
					'customer.name' : form.getForm().findField("customer.name")
							.getValue(),
					'customer.sex' : form.getForm().findField("customer.sex")
							.getValue(),
					'customer.phone' : form.getForm()
							.findField("customer.phone").getValue(),
					'customer.fax' : form.getForm().findField("customer.fax")
							.getValue(),
					'customer.email' : form.getForm()
							.findField("customer.email").getValue(),
					'customer.address' : form.getForm()
							.findField("customer.address").getValue(),
					'customer.province' : form.getForm()
							.findField("customer.province").getValue(),
					'customer.city' : form.getForm().findField("customer.city")
							.getValue(),
					'customer.area' : form.getForm().findField("customer.area")
							.getValue(),
					'customer.memo' : form.getForm().findField("customer.memo")
							.getValue()
				},
				success : function(e) {
					var d = Ext.util.JSON.decode(e.responseText);
					form.getForm().findField("customer.id")
							.setValue(d.customerid);
					form.getForm().findField("inRecords.customerid")
							.setValue(d.customerid);
					if (close) {
						Ext.getCmp("InRecordsGrid").getStore().reload();
						Ext.getCmp("InRecordsFormWin").close();
					}
				},
				failure : function(b, c) {
					Ext.MessageBox.show({
								title : "操作信息",
								msg : "信息保存出错，请联系管理员！",
								buttons : Ext.MessageBox.OK,
								icon : "ext-mb-error"
							});
				}
			});
}
InRecordsForm = Ext.extend(Ext.Window, {
	productid : null,
	title : '添加入库单',
	layout : "fit",
	id : "InRecordsFormWin",
	width : 772,
	height : 500,
	maximizable : true,
	border : false,
	modal : true,
	plain : true,
	buttonAlign : "center",
	buttons : this.buttons,
	initComponent : function() {
		this.items = [{
			xtype : 'form',
			frame : true,
			autoScroll : true,
			url : _ctxPath + "saveInRecords.do",
			id : 'recordsForm',
			width : 734,
			height : 531,
			reader : new Ext.data.JsonReader({}, [{
								name : 'inRecords.isck',
								mapping : 'isck'
							}, {
								name : 'inRecords.productcode',
								mapping : 'productcode'
							}, {
								name : 'inRecords.ordercode',
								mapping : 'ordercode'
							}, {
								name : 'inRecords.customerid',
								mapping : 'customerid'
							}, {
								name : 'customer.name',
								mapping : 'name'
							}, {
								name : 'customer.sex',
								mapping : 'sex'
							}, {
								name : 'customer.phone',
								mapping : 'phone'
							}, {
								name : 'customer.fax',
								mapping : 'fax'
							}, {
								name : 'customer.postcode',
								mapping : 'postcode'
							}, {
								name : 'customer.email',
								mapping : 'email'
							}, {
								name : 'customer.province',
								mapping : 'province'
							}, {
								name : 'customer.city',
								mapping : 'city'
							}, {
								name : 'customer.area',
								mapping : 'area'
							}, {
								name : 'customer.address',
								mapping : 'address'
							}, {
								name : 'customer.memo',
								mapping : 'memo'
							}]),
			items : [{
				xtype : 'fieldset',
				title : '产品信息',
				width : 720,
				collapsible : true,
				items : [{
							xtype : 'hidden',
							name : 'inRecords.isck'
						}, {
							layout : 'column',
							items : [{
										columnWidth : .5,
										layout : 'form',
										items : [{
													xtype : 'textfield',
													fieldLabel : '生产编号',
													allowBlank : false,
													id : 'productcode',
													name : 'inRecords.productcode'
												}]
									}, {
										columnWidth : .5,
										layout : 'form',
										items : [{
													xtype : 'textfield',
													fieldLabel : '订单编号',
													id : 'ordercode',
													allowBlank : false,
													name : 'inRecords.ordercode'
												}]
									}]
						}]
			}, {
				xtype : 'fieldset',
				title : '客户信息',
				width : 723,
				collapsible : true,
				autoHeight : true,
				items : [{
					xtype : 'container',
					flex : 1,
					layout : 'hbox',
					height : 54,
					width : 729,
					items : [{
						xtype : 'container',
						layout : 'form',
						flex : 1,
						items : [{
							xtype : 'compositefield',
							hideLabel : true,
							items : [{
										xtype : 'hidden',
										name : 'inRecords.customerid'
									}, {
										xtype : 'hidden',
										id : 'customerid',
										name : 'customer.id'
									}, {
										xtype : 'displayfield',
										value : '姓名:　　　　　　&nbsp;'
									}, {
										xtype : 'combo',
										allowBlank : false,
										name : 'customer.name',
										width : 80,
										store : new Ext.data.Store({
											proxy : new Ext.data.HttpProxy({
														url : _ctxPath
																+ '/listCustomer.do'
													}),
											reader : new Ext.data.JsonReader({
														root : 'list',
														totalProperty : 'totalCount',
														id : 'id'
													}, ['id', 'name', 'phone',
															'province', 'city',
															'area'])
										}),
										displayField : 'name',
										typeAhead : false,
										loadingText : '搜索中...',
										listWidth : 300,
										minChars : 1,
										pageSize : 10,
										hideTrigger : true,
										tpl : new Ext.XTemplate(
												'<tpl for="."><div class="search-item">',
												'<h3>{name} {phone} {province} {city} {area}</h3>',
												'</div></tpl>'),
										itemSelector : 'div.search-item',
										onSelect : function(rec) {
											Ext.Ajax.request({
												url : _ctxPath
														+ "viewCustomer.do",
												method : 'post',
												params : {
													'customer.id' : rec.data.id
												},
												success : function(e) {
													var form = Ext
															.getCmp("recordsForm")
															.getForm();
													var d = Ext.util.JSON
															.decode(e.responseText);
													form
															.findField("inRecords.customerid")
															.setValue(d.id);
													form
															.findField("customer.id")
															.setValue(d.id);
													form
															.findField("customer.name")
															.setValue(d.name);
													form
															.findField("customer.sex")
															.setValue(d.sex);
													form
															.findField("customer.phone")
															.setValue(d.phone);
													form
															.findField("customer.fax")
															.setValue(d.fax);
													form
															.findField("customer.email")
															.setValue(d.email);
													form
															.findField("customer.address")
															.setValue(d.address);
													form
															.findField("customer.province")
															.setValue(d.province);
													form
															.findField("customer.city")
															.setValue(d.city);
													form
															.findField("customer.area")
															.setValue(d.area);
													form
															.findField("customer.memo")
															.setValue(d.memo);
												},
												failure : function(b, c) {
													alert("failure")
												}
											});
										}
									}, {
										xtype : "combo",
										hideLabel : true,
										name : "customer.sex",
										id : "sex",
										mode : "local",
										editable : false,
										triggerAction : "all",
										store : ["男", "女", "未知"],
										value : "男",
										width : 40
									}]
						}, {
							xtype : 'textfield',
							name : 'customer.email',
							fieldLabel : '电子邮件'
						}]
					}, {
						xtype : 'container',
						layout : 'form',
						flex : 1,
						items : [{
									xtype : 'textfield',
									name : 'customer.phone',
									fieldLabel : '联系电话',
									allowBlank : false,
									width : 100
								}, {
									xtype : 'textfield',
									name : 'customer.address',
									fieldLabel : '详细地址',
									width : 130
								}]
					}, {
						xtype : 'container',
						flex : 1,
						layout : 'form',
						items : [{
									xtype : 'textfield',
									width : 150,
									name : 'customer.fax',
									fieldLabel : '传真',
									hideLabel : true
								}, {
									xtype : 'compositefield',
									fieldLabel : '地区',
									hideLabel : true,
									items : [{
										name : "customer.province",
										id : "province",
										width : 60,
										xtype : "combo",
										mode : "local",
										editable : false,
										triggerAction : "all",
										store : new Ext.data.JsonStore({
													autoLoad : true,
													url : _ctxPath
															+ "listProvince.do",
													fields : ["provinceid",
															"province"]
												}),
										displayField : "province",
										valueField : "province",
										listeners : {
											select : function(c, a, b) {
												Ext.Ajax.request({
													url : _ctxPath
															+ "listCity.do",
													params : {
														regionid : a.data.provinceid
													},
													method : "post",
													success : function(e) {
														var d = Ext.util.JSON
																.decode(e.responseText);
														Ext.getCmp("city")
																.getStore()
																.loadData(d);
														Ext
																.getCmp("city")
																.setValue("请选择");
													}
												});
											}
										}
									}, {
										name : "customer.city",
										id : "city",
										width : 60,
										xtype : "combo",
										mode : "local",
										editable : false,
										triggerAction : "all",
										store : new Ext.data.JsonStore({
													url : _ctxPath
															+ "listArea.do",
													fields : ["cityid", "city"]
												}),
										displayField : "city",
										valueField : "city",
										listeners : {
											select : function(c, a, b) {
												Ext.Ajax.request({
													url : _ctxPath
															+ "listArea.do",
													params : {
														regionid : a.data.cityid
													},
													method : "post",
													success : function(e) {
														var d = Ext.util.JSON
																.decode(e.responseText);
														Ext.getCmp("area")
																.getStore()
																.loadData(d);
														Ext
																.getCmp("area")
																.setValue("请选择");
													}
												});
											}
										}
									}, {
										name : "customer.area",
										id : "area",
										width : 60,
										xtype : "combo",
										mode : "local",
										editable : false,
										triggerAction : "all",
										store : new Ext.data.JsonStore({
													fields : ["areaid", "area"]
												}),
										displayField : "area",
										valueField : "area"
									}]
								}]
					}]
				}, {
					xtype : 'textarea',
					name : 'customer.memo',
					fieldLabel : '备注',
					width : 400,
					height : 39
				}]
			}, {
				xtype : 'fieldset',
				title : '货品信息',
				width : 724,
				autoHeight : true,
				autoScroll : true,
				items : [{
					xtype : 'editorgrid',
					autoHeight : true,
					id : 'cargogrid',
					store : new Ext.data.GroupingStore({
								url : 'listInRecords.do',
								groupField : '_sort',
								idProperty : 'id',
								reader : new Ext.data.JsonReader({
											root : 'list',
											totalProperty : 'totalCount',
											fields : ['_sort', 'isck', 'id',
													'cargoid', 'cargoname', {
														name : 'cargonum',
														type : 'int'
													}, 'remark', 'excode']
										})
							}),
					// plugins : [editor],
					width : 700,
					selModel : new Ext.grid.CheckboxSelectionModel({
								width : 30
							}),
					columns : [new Ext.grid.CheckboxSelectionModel({}), {
								name : '_sort',
								dataIndex : '_sort',
								hidden : true
							}, new Ext.grid.RowNumberer(), {
								header : "状态",
								dataIndex : 'isck',
								width : 50,
								renderer : function(v) {
									return v == 0 ? '未出库' : '已出库';
								}
							}, {
								xtype : 'gridcolumn',
								dataIndex : 'cargoid',
								header : '货品编号',
								allowBlank : false,
								sortable : true,
								width : 150,
								align : 'right',
								summaryRenderer : function(v, params, data) {
									return ('合计');
								}
							}, {
								xtype : 'gridcolumn',
								dataIndex : 'cargoname',
								header : '名称',
								allowBlank : false,
								sortable : true,
								width : 100,
								align : 'right',
								editor : {
									xtype : 'combo',
									allowBlank : false,
									blankText : '请选择',
									editable : false,
									triggerAction : "all",
									store : new Ext.data.JsonStore({
												autoLoad : true,
												root : 'list',
												totalProperty : 'totalCount',
												url : _ctxPath + "listCargo.do",
												fields : ["id", "cargo_name"]
											}),
									displayField : "cargo_name",
									valueField : "cargo_name",
									listeners : {
										select : function(comb, rec, idx) {
											var grid = Ext.getCmp("cargogrid");
											var st = grid.getStore();
											var row = grid.getSelectionModel()
													.getSelected();
											if (st.findExact('cargoname',
													rec.data.cargo_name) >= 0) {
												Ext.Msg
														.alert(
																"提示：",
																rec.data.cargo_name
																		+ "已经存在，请直接修改数量");
												comb.setValue("");
												st.reload({
													params : {
														'inRecords.productcode' : Ext
																.getCmp('productcode')
																.getValue()
													}
												})
											} else {
												row.data['cargoid'] = Ext
														.getCmp("productcode")
														.getValue()
														+ ""
														+ Ext.util.Format
																.substr(
																		(1000 + rec.data.id
																				* 1),
																		1, 3);
											}
										}
									}
								}
							}, {
								xtype : 'gridcolumn',
								dataIndex : 'cargonum',
								header : '数量',
								summaryType : 'sum',
								sortable : true,
								width : 100,
								editor : {
									xtype : 'numberfield',
									allowBlank : false,
									allowDecimals : false,
									decimalPrecision : 0,
									minValue : 1,
									maxValue : 150000

								}
							}, {
								xtype : 'gridcolumn',
								dataIndex : 'excode',
								header : '扩展编号',
								sortable : true,
								width : 100
							}, {
								xtype : 'gridcolumn',
								dataIndex : 'remark',
								header : '备注',
								sortable : true,
								width : 100,
								editor : {
									xtype : 'textfield'
								}
							}, {
								header : "管理",
								dataIndex : "id",
								width : 50,
								sortable : false,
								renderer : function(g, f, d, j, e) {
									var i = d.data.id;
									var h = "";
									if (isGranted("app.InRecordsAction.delInRecords")
											&& d.data.isck == 0) {
										h = '<button title="删除" value=" " class="btn-del" onclick="InRecordsForm.remove(\''
												+ i + '\')">&nbsp;</button>';
									}
									return h;
								}
							}],
					plugins : new Ext.ux.grid.GroupSummary(),
					view : new Ext.grid.GroupingView({
								forceFit : true,
								showGroupName : false,
								enableNoGroups : false,
								enableGroupingMenu : false,
								hideGroupedColumn : true,
								headersDisabled : true,
								emptyGroupText : "产品包"
							}),
					tbar : {
						xtype : 'toolbar',
						items : [{
							xtype : 'button',
							id : 'btnadd',
							iconCls : "btn-add",
							disabled : !isGranted("app.InRecordsAction.saveInRecords"),
							text : '添加货品包',
							handler : function() {
								var form = Ext.getCmp("recordsForm");
								if (form.getForm().isValid()) {
									saveCustomer(form);
									var fields = form.getForm().items;
									fields.each(function(f) {
												f.setReadOnly(true);
											});
									var grid = Ext.getCmp("cargogrid");
									var Cargo = grid.getStore().recordType;
									var p = new Cargo({
												_sort : '',
												cargoid : Ext
														.getCmp('productcode')
														.getValue(),
												cargoname : '请选择包类型',
												cargonum : '1',
												remark : ''
											});
									grid.stopEditing();
									grid.getStore().insert(0, p);
									grid.getSelectionModel().selectRow(0);
									grid.startEditing(0, 5);
								}
							}
						}, {
							xtype : 'tbseparator'
						}, {
							xtype : 'button',
							id : 'btndelbat',
							text : '删除货品包',
							disabled : !isGranted("app.InRecordsAction.delInRecords"),
							iconCls : "btn-del",
							handler : function() {
								var e = Ext.getCmp("cargogrid");
								var c = e.getSelectionModel().getSelections();
								if (c.length == 0) {
									Ext.ux.Toast.msg("信息", "请选择要删除的记录！");
									return;
								}
								var f = Array();
								for (var d = 0; d < c.length; d++) {
									f.push(c[d].data.id);
								}
								InRecordsForm.remove(f.join());
							}
						}, '-', {
							xtype : 'button',
							iconCls : "btn-refresh",
							text : '刷新',
							handler : function(b, e) {
								cargoreload();
							}
						}]
					},
					listeners : {
						afteredit : function(e) {
							var rec = e.record;
							Ext.Ajax.request({
								url : _ctxPath + "saveInRecords.do?op=ajax",
								method : 'post',
								params : {
									'inRecords.id' : rec.data.id,
									'inRecords.productcode' : Ext
											.getCmp('productcode').getValue(),
									'inRecords.ordercode' : Ext
											.getCmp('ordercode').getValue(),
									'inRecords.customerid' : Ext
											.getCmp('customerid').getValue(),
									'inRecords.cargoid' : rec.data.cargoid,
									'inRecords.cargoname' : rec.data.cargoname,
									'inRecords.cargonum' : rec.data.cargonum,
									'inRecords.remark' : rec.data.remark
								},
								success : function(response, opts) {
									var res = Ext.decode(response.responseText);
									if (res.success) {
										Ext.ux.Toast.msg("操作信息", "成功保存信息！");
									} else {
										Ext.Msg.alert("信息提示", res.message);
									}
									e.grid.getStore().reload({
										params : {
											'inRecords.productcode' : Ext
													.getCmp('productcode')
													.getValue()
										}
									});

								},
								failure : function(b, c) {
									Ext.MessageBox.show({
												title : "操作信息",
												msg : "信息保存出错，请联系管理员！",
												buttons : Ext.MessageBox.OK,
												icon : "ext-mb-error"
											});
								}
							});
						}
					}
				}]
			}]
		}];
		this.buttons = [{
					text : "保存",
					disabled : !isGranted("app.InRecordsAction.saveInRecords"),
					id : 'btnsave',
					iconCls : "btn-save",
					handler : function() {
						var a = Ext.getCmp("recordsForm");
						if (a.getForm().isValid()) {
							saveCustomer(a, true);
						}
					}
				}, {
					text : "取消",
					iconCls : "btn-cancel",
					handler : function() {
						Ext.getCmp("InRecordsFormWin").close();
					}
				}];
		InRecordsForm.superclass.initComponent.call(this);
		if (this.productid != null && this.productid != "undefined") {
			var form = Ext.getCmp("recordsForm");
			form.getForm().load({
				deferredRender : false,
				url : _ctxPath + "viewInRecords.do?inRecords.productcode="
						+ this.productid,
				waitMsg : "正在载入数据...",
				success : function(b, c) {
					if (b.findField("inRecords.isck").getValue() == 1) {
						Ext.getCmp('btnadd').setDisabled(true);
						Ext.getCmp('btndelbat').setDisabled(true);
						Ext.getCmp('btnsave').setDisabled(true);
						Ext.getCmp('cargogrid').getColumnModel().setEditable(5,
								false);
						Ext.getCmp('cargogrid').getColumnModel().setEditable(6,
								false);

					}
					Ext.getCmp("cargogrid").getStore().load({
						url : "listInRecords.do",
						params : {
							'inRecords.productcode' : Ext.getCmp("productcode")
									.getValue()
						}
					})
				},
				failure : function(a, b) {
					Ext.ux.Toast.msg("编辑", "载入失败");
				}
			});
		}
	}
});
var cargoreload = function() {
	Ext.getCmp("cargogrid").getStore().reload({
				params : {
					'inRecords.productcode' : Ext.getCmp('productcode')
							.getValue()
				}
			});
}
InRecordsForm.remove = function(b) {
	var a = Ext.getCmp("cargogrid");
	Ext.Msg.confirm("信息确认", "您确认要删除选中的记录吗？", function(c) {
				if (c == "yes") {
					Ext.Ajax.request({
								url : _ctxPath
										+ "delInRecords.do?action=cargodel",
								params : {
									'ids' : b
								},
								method : "post",
								success : function() {
									Ext.ux.Toast.msg("信息提示", "成功删除所选记录！");
									a.getStore().reload({
										params : {
											'inRecords.productcode' : Ext
													.getCmp('productcode')
													.getValue()
										}
									});
								}
							});
				}
			});
};